package com.itheima.controller;


import com.itheima.pojo.Dept;
import org.apache.commons.io.IOUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 作用:
 * ①将当前类放入Spring IOC容器
 * ②将我们方法返回值若果是一个对象,就可以将这个对象序列化成一个JSON数据响应给前端
 * ③标记当前类是一个控制器类
 */

@RestController
public class DeptController {

    /**
     * 返回部门列表
     *
     * --思路:
     *      ①解析dept.txt文件,将每一行数据读取出来封装到Dept对象
     *          工具:Apache commons-io / google guava工具包  /hutool工具包
     *          引入依赖
     *      ②将数据读取完成后,所有对象放入List集合
     *      ③将List集合转成JSON
     *      ④接口测试
     *
     *
     * @return List<Dept>
     */
    @GetMapping("/depts")
    public List<Dept> depts() throws IOException {

        //2.获取dept.txt文件的输入流
        InputStream in = this.getClass().getClassLoader().getResourceAsStream("dept.txt");

    //1.使用ioUtils读取dept.txt
        List<String> list = IOUtils.readLines(in, StandardCharsets.UTF_8);
        List<Dept> deptList = list.stream().map((o) -> {
            String[] data = o.split(",");
            Dept dept = Dept.builder()
                    .id(Integer.valueOf(data[0]))
                    .name(data[1])
                    .updateTime(LocalDateTime.parse(data[2], DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
                    .build();

            return dept;
        }).toList();
        return deptList;
    }
}
